home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 001-025 / scopedisk3 / 68kasm / src / a68kdef.h < prev    next >
Text File  |  1995-03-18  |  7KB  |  202 lines

  1. /*------------------------------------------------------------------*/
  2. /*                                    */
  3. /*              MC68000 Cross Assembler                */
  4. /*                                    */
  5. /*           Copyright (c) 1985 by Brian R. Anderson            */
  6. /*                                    */
  7. /*         #define statements - March 20,    1988            */
  8. /*                                    */
  9. /*   This program may be copied    for personal, non-commercial use    */
  10. /*   only, provided that the above copyright notice is included        */
  11. /*   on    all copies of the source code.    Copying    for any    other use   */
  12. /*   without the consent of the    author is prohibited.            */
  13. /*                                    */
  14. /*------------------------------------------------------------------*/
  15. /*                                    */
  16. /*        Originally published (in Modula-2) in            */
  17. /*        Dr.    Dobb's Journal, April, May, and June 1986.          */
  18. /*                                    */
  19. /*    AmigaDOS conversion copyright (c) 1988 by Charlie Gibbs.    */
  20. /*                                    */
  21. /*------------------------------------------------------------------*/
  22.  
  23. #define    TRUE  1
  24. #define    FALSE 0
  25. #define    NODEF 32767    /* High    line number for    undefined symbols */
  26.  
  27. /* Assembler configuration parameters */
  28. #define    MAXLINE     128    /* Longest source line */
  29. #define    MAXFN     41    /* Maximum length of file name */
  30. #define    MAXSREC     16    /* Maximum S-record data length    */
  31. #define    MAXREF     4    /* Number of line numbers in reference entry */
  32. #define    DEFHEAP     32768    /* Default size    for main heap */
  33. #define    DEFHEAP2 1024    /* Default size    for secondary heap */
  34. #define    ObjMAX     32    /* Max.    hex object code    digits in listing */
  35.  
  36. /* Hunk    number definitions */
  37. #define    HunkNone 0    /* Not in a hunk */
  38. #define    HunkUnit 999
  39. #define    HunkName 1000
  40. #define    HunkCode 1001
  41. #define    HunkData 1002
  42. #define    HunkBSS     1003
  43. #define    HunkR32     1004
  44. #define    HunkR16     1005
  45. #define    HunkR8     1006
  46. #define    HunkExt     1007
  47. #define    HunkSym     1008
  48. #define    HunkDbg     1009
  49. #define    HunkEnd     1010
  50.  
  51. #define    MEMF_FAST 0x80000000L    /* Hunk    must load in FAST memory */
  52. #define    MEMF_CHIP 0x40000000L    /* Hunk    must load in CHIP memory */
  53.  
  54. /* Hunk    numbers    denoting special symbol    attributes */
  55. #define    ABSHUNK    32767    /* Absolute */
  56.  
  57. /* Addressing mode flag    values */
  58. #define    DReg   1   /* Data Register */
  59. #define    ARDir  2   /* Address Register Direct */
  60. #define    ARInd  3   /* Address Register Indirect    */
  61. #define    ARPost 4   /* Address Register with Post-Increment */
  62. #define    ARPre  5   /* Address Register with Pre-Decrement */
  63. #define    ARDisp 6   /* Address Register with Displacement */
  64. #define    ARDisX 7   /* Address Register with Disp. & Index */
  65. #define    AbsW   8   /* Absolute Short (16-bit Address) */
  66. #define    AbsL   9   /* Absolute Long (32-bit Address) */
  67. #define    PCDisp 10  /* Program Counter Relative,    with Displacement */
  68. #define    PCDisX 11  /* Program Counter Relative,    with Disp. & Index */
  69. #define    Imm    12  /* Immediate    */
  70. #define    MultiM 13  /* Multiple Register    Move */
  71. #define    SR     14  /* Status Register */
  72. #define    CCR    15  /* Condition    Code Register */
  73. #define    USP    16  /* User's Stack Pointer */
  74. #define    Null   0   /* Error Condition, or Operand missing */
  75.  
  76. #define    X0   0       /* Register types */
  77. #define    Dreg 1
  78. #define    Areg 2
  79.  
  80. #define    S0   0       /* Size types */
  81. #define    Byte 1
  82. #define    Word 2
  83. #define    S3   3
  84. #define    Long 4
  85.  
  86. #define    CMPM  0xB108
  87. #define    JMP   0x4EC0
  88. #define    JSR   0x4E80
  89. #define    LEA   0x41C0
  90. #define    LINK  0x4E50
  91. #define    NOP   0x4E71
  92. #define    PEA   0x4840
  93. #define    STOP  0x4E72
  94. #define    SWAP  0x4840
  95. #define    UNLK  0x4E58
  96.  
  97. #define    None     0    /* Assembler directives    */
  98. #define    Org     1
  99. #define    Equ     2
  100. #define    DC     3
  101. #define    DS     4
  102. #define    Even     5
  103. #define    End     6
  104. #define    Xdef     7
  105. #define    Xref     8
  106. #define    Page     9
  107. #define    DoList    10
  108. #define    NoList    11
  109. #define    Space    12
  110. #define    Title    13
  111. #define    Cnop    14
  112. #define    Include    15
  113. #define    Set    16
  114. #define    Macro    17
  115. #define    If    18
  116. #define    EndC    19
  117. #define    MacCall    20
  118. #define    Section    21
  119. #define    Idnt    22
  120. #define    DCB    23
  121. #define    Equr    24
  122. #define    Reg    25
  123.  
  124. /* BITSETs of the modes    MISSING    from effective address modes  */
  125. #define     ea 0x0000   /*    Effective addressing - all modes */
  126. #define    dea 0x0002   /*    Data effective addressing     */
  127. #define    mea 0x0003   /*    Memory effective addressing     */
  128. #define    cea 0x081B   /*    Control    effective addressing     */
  129. #define    aea 0x0E00   /*    Alterable effective addressing     */
  130. #define    xxx 0xE000   /*    extra modes: CCR/SR/USP         */
  131.  
  132. #define    IN &        /* Simulated BITSET test */
  133.  
  134. /* AdrModeA bit    definitions */
  135. #define    RegMem3    0x0001    /* 0 = register, 1 = memory */
  136. #define    Ry02    0x0002    /* Register Rx - bits 0-2 */
  137. #define    Rx911    0x0004    /* Register Ry - bits 9-11 */
  138. #define    Data911    0x0008    /* Immediate data - bits 9-11 */
  139. #define    CntR911    0x0010    /* Count register or immediate data */
  140. #define    Brnch    0x0020    /* Relative branch */
  141. #define    DecBr    0x0040    /* Decrement and branch    */
  142. #define    Data03    0x0080    /* TRAP    vector in 0-3 */
  143. #define    Data07    0x0100    /* Data    in 0-7 (MOVEQ) */
  144. #define    OpM68D    0x0200    /* Data    register in 6-8    */
  145. #define    OpM68A    0x0400    /* Address register in 6-8 (ADDA/CMPA/SUBA) */
  146. #define    OpM68C    0x0800    /* CMP (Compare) */
  147. #define    OpM68X    0x1000    /* EOR (Exclusive or) */
  148. #define    OpM68S    0x2000    /* EXT (Sign extension)    */
  149. #define    OpM68R    0x4000    /* MOVEP (Register/memory) */
  150. #define    OpM37    0x8000    /* EXG (Exchange registers) */
  151. #define    TwoOpsA    0xDF4D    /* Two operands    are required */
  152.  
  153. /* AdrModeB bit    definitions */
  154. #define    Bit811    0x0001    /* Bit operations - bits 8-11 as switch    */
  155. #define    Size67    0x0002    /* 00 =    byte, 01 = word, 10 = long */
  156. #define    Size6    0x0004    /* 0 = word, 1 = long */
  157. #define    Sz1213A    0x0008    /* 01 =    byte, 11 = word, 10 = long */
  158. #define    Sz1213    0x0010    /* 11 =    word, 10 = long    */
  159. #define    Exten    0x0020    /* Opcode extension is required    */
  160. #define    EA05a    0x0040    /* Effective address - all */
  161. #define    EA05b    0x0080    /* All except ARDir */
  162. #define    EA05c    0x0100    /* All except ARDIR and    Imm */
  163. #define    EA05d    0x0200    /* All except PCDisp, PCDisx, and Imm */
  164. #define    EA05e    0x0400    /* All except ARDir, PCDisp, PCDisx, and Imm */
  165. #define    EA05f    0x0800    /* All except Dreg, ARDir, ARPost, ARPre, Imm */
  166. #define    EA05x    0x1000    /* Dual    mode - AND/OR */
  167. #define    EA05y    0x2000    /* Dual    mode - ADD/SUB */
  168. #define    EA05z    0x4000    /* Dual    mode - MOVEM */
  169. #define    EA611    0x8000    /* Eff.    Adr. in    6-11 (used only    by MOVE) */
  170. #define    TwoOpsB    0xF3DD    /* Two operands    are required */
  171. #define    ImmMode    0x0422    /* Immediate instructions */
  172. #define    SrcPC    0xF8C0    /* Source operand may be PCDisp    */
  173.  
  174. #define    Dummy     0    /* Error codes */
  175. #define    AlignErr 1
  176. #define    NoCode     2
  177. #define    SymDup     3
  178. #define    Undef     4
  179. #define    ModeErr     5
  180. #define    OperErr     6
  181. #define    BraErr     7
  182. #define    AddrErr     8
  183. #define    SizeErr     9
  184. #define    EndErr     10
  185. #define    AbsReq     11
  186. #define    RelErr     12
  187. #define    ManyIncl 13
  188. #define    NoIncl     14
  189. #define    FwdRef     15
  190. #define    NotSFmt     16
  191. #define    NeedLab     17
  192. #define    Phase     18
  193. #define    NoENDM     19
  194. #define    DCOflo     20
  195. #define    ManySect 21
  196. #define    DupMac     22
  197. #define    MultLab     23
  198. #define    NoStrEnd 24
  199. #define    BccSDsp0 25
  200.  
  201. #define    ERRMAX 10    /* Size    of error message table */
  202.